package office

import (
	"fmt"
	"log"
	"strconv"

	"github.com/xuri/excelize/v2"
)

func ExcelBasic() {
	fin, err := excelize.OpenFile("./学生信息表.xlsx")

	if err != nil {
		fmt.Printf("打开Excel 文件失败 %v", err)
	}

	// Step1. 取出某个单元格的数据
	cell, err := fin.GetCellValue("一年级", "A2") // Sheet 单元格坐标
	if err != nil {
		log.Printf("单元格数据获取失败")
	} else {
		fmt.Println("A2的结果为：", cell)
	}

	// Step2. 遍历某个 Sheet
	sum := 0.00
	count := 0

	rows, err := fin.GetRows("二年级")

	if err != nil {
		log.Printf("无法遍历Sheet: %v", err)
		return
	}

	for _, row := range rows {
		if len(row) >= 4 {
			if score, err := strconv.ParseFloat(row[3], 64); err == nil {
				sum += score
				count++
			}
		}
	}

	avgScore := sum / float64(count)

	// Step 3. 写入特定单元格
	cell = "D" + strconv.Itoa(len(rows)+1) // 已有内容的下一行
	err = fin.SetCellValue("二年级", cell, avgScore)

	if err != nil {
		log.Printf("写单元格失败: %v", err)
	} else {
		fmt.Printf("向单元格 %s 写入内容: %f \n", cell, avgScore)
	}
	// 保存文件
	fin.Save()
}
